//
//  XXMark.swift
//  XXSwiftDemo
//
//  Created by admin on 2022/3/28.
//

// MARK: - GCD
/*
 
 // MARK: 主线程延迟执行
 DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
     self.delayExecution()
 }

 // MARK: 子线程延迟执行
 DispatchQueue.global().asyncAfter(deadline: .now() + 3) {
     self.delayExecution()
 }
 
 // MARK: 返回到主线程
 DispatchQueue.main.async {
        
 }
 
 // MARK: 线程组
 let group = DispatchGroup()
 let queue = DispatchQueue(label: "groupQueue")
 group.enter()
 queue.async {
 
     group.leave()
 }
 group.enter()
 queue.async {
 
     group.leave()
 }
 // 完成
 group.notify(queue: DispatchQueue.main) {

 }
 
 // MARK: 异步 同步 串行 并发
 // 异步并发 (开启新线程，并发执行)  async异步
 // 异步串行 (开启1条新线程，串行执行)
 // 同步并发 (无新线程，并发执行)
 // 同步串行 (无新线程，串行执行)

 let queue = DispatchQueue.global() // 全局并发队列
 let queue = DispatchQueue(label: "syncQueue")// 串行队列
 
 queue.async { // 异步
    
 }
 queue.sync {// 同步
   
 }
 
 // MARK: 信号量可控制并发
 let semaphore = DispatchSemaphore(value: 10)
 let queue = DispatchQueue(label: "myQueue")
 for i in 0...100{
     queue.async {
         semaphore.wait()
         print("-------\(i)")
         DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
             semaphore.signal()
         }
//                semaphore.signal()
     }
 }
 
*/
// MARK: - 代码块
/*

 // MARK: <#线程组#>

 */
